package com.zw.yzk.kabu.im;

import android.content.Context;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.rong.imkit.DefaultExtensionModule;
import io.rong.imkit.IExtensionModule;
import io.rong.imkit.RongExtensionManager;
import io.rong.imkit.RongIM;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;

/**
 * Created by zhanwei on 2017/5/14.
 */

public class IMUtils {

    /**
     * 初始化融云
     *
     * @param context
     */
    public static void init(Context context) {
        RongIM.init(context);
//        setInputProvider();
    }

    /**
     * 退出
     */
    public static void logout() {
        RongIM.getInstance().disconnect();
    }

    /**
     * <p>连接服务器，在整个应用程序全局，只需要调用一次，需在 {@link #init(Context)} 之后调用。</p>
     * <p>如果调用此接口遇到连接失败，SDK 会自动启动重连机制进行最多10次重连，分别是1, 2, 4, 8, 16, 32, 64, 128, 256, 512秒后。
     * 在这之后如果仍没有连接成功，还会在当检测到设备网络状态变化时再次进行重连。</p>
     *
     * @param token 从服务端获取的用户身份令牌（Token）。
     * @return RongIM  客户端核心类的实例。
     */
    public static void connect(String token, RongIMClient.ConnectCallback callback) {
        RongIM.connect(token, callback);
    }

    /**
     * 打开私聊会话页面
     *
     * @param context      上下文
     * @param targetUserId 目标
     * @param title        标题
     */
    public static void startPrivateConversationActivity(Context context, String targetUserId, String title) {
        if (RongIM.getInstance() != null)
            RongIM.getInstance().startPrivateChat(context, targetUserId, title);
    }


    /**
     * 打开会话列表
     *
     * @param context          应用上下文。
     * @param conversationType 会话类型。
     */
    public static void startSubConversationList(Context context, Conversation.ConversationType conversationType) {
        if(RongIM.getInstance() != null) {
            Map<String, Boolean> map = new HashMap<>();
            map.put(Conversation.ConversationType.PRIVATE.getName(), false);
            RongIM.getInstance().startConversationList(context, map);
        }
    }

    /**
     * 设置扩展栏Provider
     */
    private static void setInputProvider() {
        List<IExtensionModule> moduleList = RongExtensionManager.getInstance().getExtensionModules();
        IExtensionModule defaultModule = null;
        for (IExtensionModule module : moduleList) {
            if(module instanceof DefaultExtensionModule) {
                defaultModule = module;
                break;
            }
        }
        if(defaultModule != null) {
            RongExtensionManager.getInstance().unregisterExtensionModule(defaultModule);
            RongExtensionManager.getInstance().registerExtensionModule(new CustomExtensionModule());
        }
    }
}
